Skip to content

Builder code ts improvements#2

Merged
0xClouds merged 10 commits into
pk-coinbase:feat/builder-code-extensionfrom
phdargen:builder-code-ts
May 26, 2026
Merged

Builder code ts improvements#2
0xClouds merged 10 commits into
pk-coinbase:feat/builder-code-extensionfrom
phdargen:builder-code-ts

Conversation

@phdargen
Copy link
Copy Markdown

@phdargen phdargen commented May 19, 2026

Changes in this PR

Extension package — align with spec

  • Server APIdeclareBuilderCodeExtension() now returns { info, schema } (JSON Schema Draft 2020-12); resourceServer.tsserver.ts
  • s ownership — moved from server-declared string[] to client-provided string per spec
  • Client extension — new BuilderCodeClientExtension: echoes server a, attaches client s
  • FacilitatorbuildCalldataSuffix(payload)buildDataSuffix(ctx):
    • reads a from PaymentRequired.extensions (server truth)
    • soft echo validation against client payload (warn + fallback, never fail settlement)
    • reads s from client payload
    • always adds facilitator w
  • CBOR — added parseBuilderCodeSuffixFromCalldata() for off-chain parsing

Core — validate client payload echoes server defined extension fields

  • Add validateExtensions utility

EVM mechanisms — calldata suffix append (TypeScript)

  • New shared/extensions/builderCode.ts: resolveDataSuffix(), appendDataSuffix(); gas sponsoring split out of shared/extensions.ts
  • Wire suffix into all major EVM settle paths:
    • exact — EIP-3009, Permit2, v1
    • upto — Permit2
    • batch-settlement — deposit, claim, refund, settle
  • Remove duplicated suffix logic from eip3009-utils.ts

Tests & examples

  • Unit + integration tests in typescript/packages/extensions
  • Core test updates for paymentRequiredExtensions in HTTP facilitator client
  • TypeScript examples: examples/typescript/{servers,clients,facilitator}/builder-code/

@0xClouds 0xClouds merged commit f752e69 into pk-coinbase:feat/builder-code-extension May 26, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants